昨天提到當 @
後面接著 Razor 保留關鍵字時,它才會轉換成 Razor 特定的標記,而今天就要來介紹第一批的關鍵字,也就是 Razor 指示詞(Directives)。
雖然都沒有特別提到,但第二天會先建舞台的用意,就是有一個環境可以練習道具,可以試著修改裡面的檔案來看每一個道具效果。
@attribute
指示詞針對頁面增加屬性。
@attribute [Authorize]
使該頁面增加 [Authorize] 屬性。
@code
指示詞針對頁面增加成員(欄位、屬性和方法)。
@code {
private int currentCount = 0;
}
使該頁面增加私有數字欄位currentCount
,且初始值為0
。
@functions
指示詞針對頁面增加成員(欄位、屬性和方法)。
疑~怎麼重複了?因為 @code
和 @functions
真的是一樣的作用,為了使程式碼語意更清楚,官方建議加入欄位或屬性使用 @code
,而加入方法則使用 @functions
。
而昨天說的區域函式建議寫在 @function
裡。
@functions{
private void IncrementCount()
{
currentCount++;
}
}
使該頁面增加私有方法IncrementCount
,並與剛剛增加的currentCount
欄位互動。
@implements
指示詞針對頁面加入需實作的介面。
@implements IDisposable
@functions {
private bool _isDisposed;
// ...
public void Dispose() => _isDisposed = true;
}
使該頁面必須實作IDisposable
介面的方法。
@inherits
指示詞針對頁面加入繼承的父類。
先新增 CustomRazorPage.razor
檔案,並加入內容。
@* CustomRazorPage.razor *@
@code {
public string CustomText = "嗨嗨,我是米歐。";
}
就可以使用:
@inherits CustomRazorPage
<p>@CustomText</p>
使該頁面能夠使用父類CustomRazorPage
內所能存取的成員。
@inject
指示詞針對頁面注入對應服務。
@inject HttpClient httpClient
使該頁面能夠從 DI 容器中取得HttpClient
實體。
後續文章將針對相依性注入詳細介紹。
@layout
指示詞針對頁面加入版面配置元件。
@layout MainLayout
使該頁面增加MainLayout
版面配置。
後續文章將針對版面配置詳細介紹。
@page
指示詞設定頁面路由。
@page "/counter"
使該頁面的進入點為/counter
。
後續文章將針對路由詳細介紹。
@using
指示詞針對頁面加入其他命名空間的別名。
@using System;
使該頁面能夠直接瀏覽System
命名空間。
以上就是第一批魔術道具 Razor 指示詞的所有介紹與用途啦。
感謝大家的閱讀,我們明天見。
參考資料
Razor 語法 - 指示詞